package com.cn.namesrv;

import com.cn.exception.MyException;
import com.cn.util.FileConfigPropertyUtil;
import org.apache.commons.cli.*;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;

public class NameSrvStart {

    public static void main(String[] args) {
        try {
            main1(null);
//            main0(args);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main0(String[] args) throws ParseException, IOException {
        Options options = new Options();
        /**
         * 1、初始化命令
         *  opt : c 在命令行输入： java -jar demo.jar -c 参数1
         *  longOpt :  config 是 c 的全写方式 ，与 opt 一致
         */

        Option opt = new Option("c", "config", true, "配置文件路径，例如： /data2/config/config.properties");
        opt.setRequired(true);//true 在命令行的时候必须要添加参数， false 没有参数也可以
        Option opt1 = new Option("h", "help", false, "帮助: c 配置文件路径<br> exit 退出<br> ");
        opt1.setRequired(false);

        options.addOption(opt);
        options.addOption(opt1);


        CommandLineParser parser = new DefaultParser();
        CommandLine commandLine = parser.parse(options, args);

        String optNmae = "c";
        String config = null;
        if (commandLine.hasOption(optNmae)) {
            for (String s : commandLine.getOptionValues(optNmae)) {
                config = s;
            }
        }
        if (StringUtils.isEmpty(config)) {
            throw new MyException("配置文件不能为空");
        }
        FileConfigPropertyUtil cfg = new FileConfigPropertyUtil(config);
        System.out.println(cfg.get("namesrv_ip"));
        System.out.println(cfg.get("namesrv_port"));
        main1(cfg);
    }

    public static void main1(FileConfigPropertyUtil config) throws IOException {
        config = config == null ? new FileConfigPropertyUtil() : config;
        NameSrvController nameSrvService = new NameSrvController(config);
        nameSrvService.start();
    }


}
